diff options
Diffstat (limited to 'drivers/block/drbd/drbd_nl.c')
-rw-r--r-- | drivers/block/drbd/drbd_nl.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c index ce6f2fe80852..bc0bcb964603 100644 --- a/drivers/block/drbd/drbd_nl.c +++ b/drivers/block/drbd/drbd_nl.c | |||
@@ -648,7 +648,9 @@ enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev, enum dds_ | |||
648 | dev_info(DEV, "Writing the whole bitmap, %s\n", | 648 | dev_info(DEV, "Writing the whole bitmap, %s\n", |
649 | la_size_changed && md_moved ? "size changed and md moved" : | 649 | la_size_changed && md_moved ? "size changed and md moved" : |
650 | la_size_changed ? "size changed" : "md moved"); | 650 | la_size_changed ? "size changed" : "md moved"); |
651 | err = drbd_bitmap_io(mdev, &drbd_bm_write, "size changed"); /* does drbd_resume_io() ! */ | 651 | /* next line implicitly does drbd_suspend_io()+drbd_resume_io() */ |
652 | err = drbd_bitmap_io(mdev, &drbd_bm_write, | ||
653 | "size changed", BM_LOCKED_MASK); | ||
652 | if (err) { | 654 | if (err) { |
653 | rv = dev_size_error; | 655 | rv = dev_size_error; |
654 | goto out; | 656 | goto out; |
@@ -1160,12 +1162,14 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp | |||
1160 | if (drbd_md_test_flag(mdev->ldev, MDF_FULL_SYNC)) { | 1162 | if (drbd_md_test_flag(mdev->ldev, MDF_FULL_SYNC)) { |
1161 | dev_info(DEV, "Assuming that all blocks are out of sync " | 1163 | dev_info(DEV, "Assuming that all blocks are out of sync " |
1162 | "(aka FullSync)\n"); | 1164 | "(aka FullSync)\n"); |
1163 | if (drbd_bitmap_io(mdev, &drbd_bmio_set_n_write, "set_n_write from attaching")) { | 1165 | if (drbd_bitmap_io(mdev, &drbd_bmio_set_n_write, |
1166 | "set_n_write from attaching", BM_LOCKED_MASK)) { | ||
1164 | retcode = ERR_IO_MD_DISK; | 1167 | retcode = ERR_IO_MD_DISK; |
1165 | goto force_diskless_dec; | 1168 | goto force_diskless_dec; |
1166 | } | 1169 | } |
1167 | } else { | 1170 | } else { |
1168 | if (drbd_bitmap_io(mdev, &drbd_bm_read, "read from attaching") < 0) { | 1171 | if (drbd_bitmap_io(mdev, &drbd_bm_read, |
1172 | "read from attaching", BM_LOCKED_MASK) < 0) { | ||
1169 | retcode = ERR_IO_MD_DISK; | 1173 | retcode = ERR_IO_MD_DISK; |
1170 | goto force_diskless_dec; | 1174 | goto force_diskless_dec; |
1171 | } | 1175 | } |
@@ -1173,7 +1177,8 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp | |||
1173 | 1177 | ||
1174 | if (cp_discovered) { | 1178 | if (cp_discovered) { |
1175 | drbd_al_apply_to_bm(mdev); | 1179 | drbd_al_apply_to_bm(mdev); |
1176 | if (drbd_bitmap_io(mdev, &drbd_bm_write, "crashed primary apply AL")) { | 1180 | if (drbd_bitmap_io(mdev, &drbd_bm_write, |
1181 | "crashed primary apply AL", BM_LOCKED_MASK)) { | ||
1177 | retcode = ERR_IO_MD_DISK; | 1182 | retcode = ERR_IO_MD_DISK; |
1178 | goto force_diskless_dec; | 1183 | goto force_diskless_dec; |
1179 | } | 1184 | } |
@@ -1925,7 +1930,8 @@ static int drbd_nl_invalidate_peer(struct drbd_conf *mdev, struct drbd_nl_cfg_re | |||
1925 | retcode = drbd_request_state(mdev, NS(pdsk, D_INCONSISTENT)); | 1930 | retcode = drbd_request_state(mdev, NS(pdsk, D_INCONSISTENT)); |
1926 | if (retcode >= SS_SUCCESS) { | 1931 | if (retcode >= SS_SUCCESS) { |
1927 | if (drbd_bitmap_io(mdev, &drbd_bmio_set_susp_al, | 1932 | if (drbd_bitmap_io(mdev, &drbd_bmio_set_susp_al, |
1928 | "set_n_write from invalidate_peer")) | 1933 | "set_n_write from invalidate_peer", |
1934 | BM_LOCKED_SET_ALLOWED)) | ||
1929 | retcode = ERR_IO_MD_DISK; | 1935 | retcode = ERR_IO_MD_DISK; |
1930 | } | 1936 | } |
1931 | } else | 1937 | } else |
@@ -2143,7 +2149,8 @@ static int drbd_nl_new_c_uuid(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nl | |||
2143 | drbd_uuid_new_current(mdev); /* New current, previous to UI_BITMAP */ | 2149 | drbd_uuid_new_current(mdev); /* New current, previous to UI_BITMAP */ |
2144 | 2150 | ||
2145 | if (args.clear_bm) { | 2151 | if (args.clear_bm) { |
2146 | err = drbd_bitmap_io(mdev, &drbd_bmio_clear_n_write, "clear_n_write from new_c_uuid"); | 2152 | err = drbd_bitmap_io(mdev, &drbd_bmio_clear_n_write, |
2153 | "clear_n_write from new_c_uuid", BM_LOCKED_MASK); | ||
2147 | if (err) { | 2154 | if (err) { |
2148 | dev_err(DEV, "Writing bitmap failed with %d\n",err); | 2155 | dev_err(DEV, "Writing bitmap failed with %d\n",err); |
2149 | retcode = ERR_IO_MD_DISK; | 2156 | retcode = ERR_IO_MD_DISK; |