aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_nl.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/drbd/drbd_nl.c')
-rw-r--r--drivers/block/drbd/drbd_nl.c19
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;