diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/block_dev.c | 10 | ||||
-rw-r--r-- | fs/ioctl.c | 6 |
2 files changed, 13 insertions, 3 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 1d9c9f3754f8..b48c41bf0f86 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -235,7 +235,10 @@ struct super_block *freeze_bdev(struct block_device *bdev) | |||
235 | sb = get_active_super(bdev); | 235 | sb = get_active_super(bdev); |
236 | if (!sb) | 236 | if (!sb) |
237 | goto out; | 237 | goto out; |
238 | error = freeze_super(sb); | 238 | if (sb->s_op->freeze_super) |
239 | error = sb->s_op->freeze_super(sb); | ||
240 | else | ||
241 | error = freeze_super(sb); | ||
239 | if (error) { | 242 | if (error) { |
240 | deactivate_super(sb); | 243 | deactivate_super(sb); |
241 | bdev->bd_fsfreeze_count--; | 244 | bdev->bd_fsfreeze_count--; |
@@ -272,7 +275,10 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb) | |||
272 | if (!sb) | 275 | if (!sb) |
273 | goto out; | 276 | goto out; |
274 | 277 | ||
275 | error = thaw_super(sb); | 278 | if (sb->s_op->thaw_super) |
279 | error = sb->s_op->thaw_super(sb); | ||
280 | else | ||
281 | error = thaw_super(sb); | ||
276 | if (error) { | 282 | if (error) { |
277 | bdev->bd_fsfreeze_count++; | 283 | bdev->bd_fsfreeze_count++; |
278 | mutex_unlock(&bdev->bd_fsfreeze_mutex); | 284 | mutex_unlock(&bdev->bd_fsfreeze_mutex); |
diff --git a/fs/ioctl.c b/fs/ioctl.c index 8ac3fad36192..77c9a7812542 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c | |||
@@ -518,10 +518,12 @@ static int ioctl_fsfreeze(struct file *filp) | |||
518 | return -EPERM; | 518 | return -EPERM; |
519 | 519 | ||
520 | /* If filesystem doesn't support freeze feature, return. */ | 520 | /* If filesystem doesn't support freeze feature, return. */ |
521 | if (sb->s_op->freeze_fs == NULL) | 521 | if (sb->s_op->freeze_fs == NULL && sb->s_op->freeze_super == NULL) |
522 | return -EOPNOTSUPP; | 522 | return -EOPNOTSUPP; |
523 | 523 | ||
524 | /* Freeze */ | 524 | /* Freeze */ |
525 | if (sb->s_op->freeze_super) | ||
526 | return sb->s_op->freeze_super(sb); | ||
525 | return freeze_super(sb); | 527 | return freeze_super(sb); |
526 | } | 528 | } |
527 | 529 | ||
@@ -533,6 +535,8 @@ static int ioctl_fsthaw(struct file *filp) | |||
533 | return -EPERM; | 535 | return -EPERM; |
534 | 536 | ||
535 | /* Thaw */ | 537 | /* Thaw */ |
538 | if (sb->s_op->thaw_super) | ||
539 | return sb->s_op->thaw_super(sb); | ||
536 | return thaw_super(sb); | 540 | return thaw_super(sb); |
537 | } | 541 | } |
538 | 542 | ||