diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/afs/internal.h | 2 | ||||
| -rw-r--r-- | fs/afs/rxrpc.c | 3 | ||||
| -rw-r--r-- | fs/block_dev.c | 16 | ||||
| -rw-r--r-- | fs/nilfs2/the_nilfs.c | 7 |
4 files changed, 23 insertions, 5 deletions
diff --git a/fs/afs/internal.h b/fs/afs/internal.h index d2b0888126d4..a306bb6d88d9 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h | |||
| @@ -109,7 +109,7 @@ struct afs_call { | |||
| 109 | unsigned reply_size; /* current size of reply */ | 109 | unsigned reply_size; /* current size of reply */ |
| 110 | unsigned first_offset; /* offset into mapping[first] */ | 110 | unsigned first_offset; /* offset into mapping[first] */ |
| 111 | unsigned last_to; /* amount of mapping[last] */ | 111 | unsigned last_to; /* amount of mapping[last] */ |
| 112 | unsigned short offset; /* offset into received data store */ | 112 | unsigned offset; /* offset into received data store */ |
| 113 | unsigned char unmarshall; /* unmarshalling phase */ | 113 | unsigned char unmarshall; /* unmarshalling phase */ |
| 114 | bool incoming; /* T if incoming call */ | 114 | bool incoming; /* T if incoming call */ |
| 115 | bool send_pages; /* T if data from mapping should be sent */ | 115 | bool send_pages; /* T if data from mapping should be sent */ |
diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c index e45a323aebb4..8ad8c2a0703a 100644 --- a/fs/afs/rxrpc.c +++ b/fs/afs/rxrpc.c | |||
| @@ -314,6 +314,7 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp, | |||
| 314 | struct msghdr msg; | 314 | struct msghdr msg; |
| 315 | struct kvec iov[1]; | 315 | struct kvec iov[1]; |
| 316 | int ret; | 316 | int ret; |
| 317 | struct sk_buff *skb; | ||
| 317 | 318 | ||
| 318 | _enter("%x,{%d},", addr->s_addr, ntohs(call->port)); | 319 | _enter("%x,{%d},", addr->s_addr, ntohs(call->port)); |
| 319 | 320 | ||
| @@ -380,6 +381,8 @@ int afs_make_call(struct in_addr *addr, struct afs_call *call, gfp_t gfp, | |||
| 380 | 381 | ||
| 381 | error_do_abort: | 382 | error_do_abort: |
| 382 | rxrpc_kernel_abort_call(rxcall, RX_USER_ABORT); | 383 | rxrpc_kernel_abort_call(rxcall, RX_USER_ABORT); |
| 384 | while ((skb = skb_dequeue(&call->rx_queue))) | ||
| 385 | afs_free_skb(skb); | ||
| 383 | rxrpc_kernel_end_call(rxcall); | 386 | rxrpc_kernel_end_call(rxcall); |
| 384 | call->rxcall = NULL; | 387 | call->rxcall = NULL; |
| 385 | error_kill_call: | 388 | error_kill_call: |
diff --git a/fs/block_dev.c b/fs/block_dev.c index 0e575d1304b4..5e9f198f7712 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
| @@ -1183,8 +1183,12 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) | |||
| 1183 | * The latter is necessary to prevent ghost | 1183 | * The latter is necessary to prevent ghost |
| 1184 | * partitions on a removed medium. | 1184 | * partitions on a removed medium. |
| 1185 | */ | 1185 | */ |
| 1186 | if (bdev->bd_invalidated && (!ret || ret == -ENOMEDIUM)) | 1186 | if (bdev->bd_invalidated) { |
| 1187 | rescan_partitions(disk, bdev); | 1187 | if (!ret) |
| 1188 | rescan_partitions(disk, bdev); | ||
| 1189 | else if (ret == -ENOMEDIUM) | ||
| 1190 | invalidate_partitions(disk, bdev); | ||
| 1191 | } | ||
| 1188 | if (ret) | 1192 | if (ret) |
| 1189 | goto out_clear; | 1193 | goto out_clear; |
| 1190 | } else { | 1194 | } else { |
| @@ -1214,8 +1218,12 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) | |||
| 1214 | if (bdev->bd_disk->fops->open) | 1218 | if (bdev->bd_disk->fops->open) |
| 1215 | ret = bdev->bd_disk->fops->open(bdev, mode); | 1219 | ret = bdev->bd_disk->fops->open(bdev, mode); |
| 1216 | /* the same as first opener case, read comment there */ | 1220 | /* the same as first opener case, read comment there */ |
| 1217 | if (bdev->bd_invalidated && (!ret || ret == -ENOMEDIUM)) | 1221 | if (bdev->bd_invalidated) { |
| 1218 | rescan_partitions(bdev->bd_disk, bdev); | 1222 | if (!ret) |
| 1223 | rescan_partitions(bdev->bd_disk, bdev); | ||
| 1224 | else if (ret == -ENOMEDIUM) | ||
| 1225 | invalidate_partitions(bdev->bd_disk, bdev); | ||
| 1226 | } | ||
| 1219 | if (ret) | 1227 | if (ret) |
| 1220 | goto out_unlock_bdev; | 1228 | goto out_unlock_bdev; |
| 1221 | } | 1229 | } |
diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c index d32714094375..501b7f8b739f 100644 --- a/fs/nilfs2/the_nilfs.c +++ b/fs/nilfs2/the_nilfs.c | |||
| @@ -409,6 +409,12 @@ static int nilfs_store_disk_layout(struct the_nilfs *nilfs, | |||
| 409 | nilfs->ns_first_data_block = le64_to_cpu(sbp->s_first_data_block); | 409 | nilfs->ns_first_data_block = le64_to_cpu(sbp->s_first_data_block); |
| 410 | nilfs->ns_r_segments_percentage = | 410 | nilfs->ns_r_segments_percentage = |
| 411 | le32_to_cpu(sbp->s_r_segments_percentage); | 411 | le32_to_cpu(sbp->s_r_segments_percentage); |
| 412 | if (nilfs->ns_r_segments_percentage < 1 || | ||
| 413 | nilfs->ns_r_segments_percentage > 99) { | ||
| 414 | printk(KERN_ERR "NILFS: invalid reserved segments percentage.\n"); | ||
| 415 | return -EINVAL; | ||
| 416 | } | ||
| 417 | |||
| 412 | nilfs_set_nsegments(nilfs, le64_to_cpu(sbp->s_nsegments)); | 418 | nilfs_set_nsegments(nilfs, le64_to_cpu(sbp->s_nsegments)); |
| 413 | nilfs->ns_crc_seed = le32_to_cpu(sbp->s_crc_seed); | 419 | nilfs->ns_crc_seed = le32_to_cpu(sbp->s_crc_seed); |
| 414 | return 0; | 420 | return 0; |
| @@ -515,6 +521,7 @@ static int nilfs_load_super_block(struct the_nilfs *nilfs, | |||
| 515 | brelse(sbh[1]); | 521 | brelse(sbh[1]); |
| 516 | sbh[1] = NULL; | 522 | sbh[1] = NULL; |
| 517 | sbp[1] = NULL; | 523 | sbp[1] = NULL; |
| 524 | valid[1] = 0; | ||
| 518 | swp = 0; | 525 | swp = 0; |
| 519 | } | 526 | } |
| 520 | if (!valid[swp]) { | 527 | if (!valid[swp]) { |
