Skip to content

Commit

Permalink
[S390] cio: remove registered flag from ccw_device_private
Browse files Browse the repository at this point in the history
We used to maintain a "registered" flag in our ccw_device_private
structure. This patch removes the "registered" flag and converts
all users of it to device_is_registered which has the exact same
meaning.

Note: The usage the atomic operation test_and_clear_bit is replaced
by the non-atomic if (device_is_registered()) device_del(). This
will not do harm, since we serialize calls to ccw_device_unregister
with a single-threaded workqueue.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Sebastian Ott authored and Martin Schwidefsky committed Dec 7, 2009
1 parent d7d12ef commit 7d253b9
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 9 deletions.
11 changes: 3 additions & 8 deletions drivers/s390/cio/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ int ccw_device_is_orphan(struct ccw_device *cdev)

static void ccw_device_unregister(struct ccw_device *cdev)
{
if (test_and_clear_bit(1, &cdev->private->registered)) {
if (device_is_registered(&cdev->dev)) {
device_del(&cdev->dev);
/* Release reference from device_initialize(). */
put_device(&cdev->dev);
Expand Down Expand Up @@ -640,12 +640,7 @@ static int ccw_device_register(struct ccw_device *cdev)
cdev->private->dev_id.devno);
if (ret)
return ret;
ret = device_add(dev);
if (ret)
return ret;

set_bit(1, &cdev->private->registered);
return ret;
return device_add(dev);
}

static int match_dev_id(struct device *dev, void *data)
Expand All @@ -669,7 +664,7 @@ static void ccw_device_do_unbind_bind(struct ccw_device *cdev)
{
int ret;

if (test_bit(1, &cdev->private->registered)) {
if (device_is_registered(&cdev->dev)) {
device_release_driver(&cdev->dev);
ret = device_attach(&cdev->dev);
WARN_ON(ret == -ENODEV);
Expand Down
1 change: 0 additions & 1 deletion drivers/s390/cio/io_sch.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ struct ccw_device_private {
struct subchannel *sch;
int state; /* device state */
atomic_t onoff;
unsigned long registered;
struct ccw_dev_id dev_id; /* device id */
struct subchannel_id schid; /* subchannel number */
struct ccw_request req; /* internal I/O request */
Expand Down

0 comments on commit 7d253b9

Please sign in to comment.