Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 268039
b: refs/heads/master
c: a5b2359
h: refs/heads/master
i:
  268037: 36fc830
  268035: ad19e50
  268031: 5af5175
v: v3
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Aug 29, 2011
1 parent 948a077 commit dc8fd12
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c352ee8f610bb136d5666b142bff8f48fa7a9289
refs/heads/master: a5b2359b05925ade4b9a645b9e45a6c4b8fb1ff0
23 changes: 6 additions & 17 deletions trunk/drivers/staging/hv/storvsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,6 @@ static inline struct storvsc_device *get_in_stor_device(
return stor_device;
}

/* Drop ref count to 0. No one can use stor_device object. */
static inline struct storvsc_device *final_release_stor_device(
struct hv_device *device)
{
struct storvsc_device *stor_device;

stor_device = (struct storvsc_device *)device->ext;

/* Busy wait until the ref drop to 1, then set it to 0 */
while (atomic_cmpxchg(&stor_device->ref_count, 1, 0) != 1)
udelay(100);

device->ext = NULL;
return stor_device;
}

static int storvsc_channel_init(struct hv_device *device)
{
struct storvsc_device *stor_device;
Expand Down Expand Up @@ -401,7 +385,12 @@ int storvsc_dev_remove(struct hv_device *device)

storvsc_wait_to_drain(stor_device);

stor_device = final_release_stor_device(device);
/*
* Since we have already drained, we don't need to busy wait
* as was done in final_release_stor_device()
*/
atomic_set(&stor_device->ref_count, 0);
device->ext = NULL;

/* Close the channel */
vmbus_close(device->channel);
Expand Down

0 comments on commit dc8fd12

Please sign in to comment.