[DRBD-cvs] drbd by lars; fixed BAD typo. restructered a bit.
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Mon, 26 Jan 2004 16:57:47 +0100 (CET)
DRBD CVS committal
Author : lars
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_compat_wrappers.h
Log Message:
fixed BAD typo. restructered a bit.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_compat_wrappers.h,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -3 -r1.1.2.7 -r1.1.2.8
--- drbd_compat_wrappers.h 25 Jan 2004 19:03:50 -0000 1.1.2.7
+++ drbd_compat_wrappers.h 26 Jan 2004 15:57:42 -0000 1.1.2.8
@@ -141,7 +141,8 @@
bh->b_end_io = h;
}
-static inline void drbd_md_prepare_write(drbd_dev *mdev, sector_t sector)
+static inline void
+drbd_md_bh_prepare(drbd_dev *mdev, sector_t sector)
{
struct buffer_head * const bh = &mdev->md_io_bio;
@@ -150,34 +151,40 @@
bh->b_private = mdev;
bh->b_rdev = mdev->md_device;
bh->b_rsector = sector;
-
- // we skip submit_bh, but use generic_make_request.
- // ?? set_bit(BH_Uptodate, &bh->b_state);
- set_bit(BH_Req, &bh->b_state);
- set_bit(BH_Launder, &bh->b_state);
- set_bit(BH_Lock, &bh->b_state);
-
- drbd_bio_set_pages_dirty(bh);
- drbd_bio_set_end_io(&mdev->md_io_bio,drbd_generic_end_io);
+ bh->b_state = (1 << BH_Req)
+ |(1 << BH_Launder)
+ |(1 << BH_Lock);
}
-static inline void drbd_md_prepare_read(drbd_dev *mdev, sector_t sector)
+static inline void drbd_md_prepare_write(drbd_dev *mdev, sector_t sector)
{
struct buffer_head * const bh = &mdev->md_io_bio;
- bh->b_blocknr = sector; // We abuse b_blocknr here.
- bh->b_size = 512;
- bh->b_private = mdev;
- bh->b_rdev = mdev->md_device;
- bh->b_rsector = sector;
+ drbd_md_bh_prepare(mdev,sector);
+ set_bit(BH_Uptodate, &bh->b_state);
+ set_bit(BH_Dirty, &bh->b_state);
+ mdev->md_io_bio.b_end_io = drbd_generic_end_io;
+}
- // we skip submit_bh, but use generic_make_request.
- clear_bit(BH_Uptodate, &bh->b_state);
- set_bit(BH_Req, &bh->b_state);
- set_bit(BH_Launder, &bh->b_state);
- set_bit(BH_Lock, &bh->b_state);
+static inline void drbd_md_prepare_read(drbd_dev *mdev, sector_t sector)
+{
+ drbd_md_bh_prepare(mdev, sector);
+ mdev->md_io_bio.b_end_io = drbd_generic_end_io;
+}
- drbd_bio_set_end_io(&mdev->md_io_bio,drbd_generic_end_io);
+static inline void
+drbd_bh_prepare(drbd_dev *mdev, struct buffer_head *bh,
+ sector_t sector, int size)
+{
+ // maybe: memset(bh,0,sizeof(*bh));
+ bh->b_blocknr = sector; // We abuse b_blocknr here.
+ bh->b_size = size;
+ bh->b_rsector = sector;
+ bh->b_rdev = mdev->lo_device;
+ bh->b_private = mdev;
+ bh->b_state = (1 << BH_Req)
+ |(1 << BH_Launder)
+ |(1 << BH_Lock);
}
static inline void
@@ -186,17 +193,10 @@
{
struct buffer_head * const bh = &e->private_bio;
- bh->b_blocknr = sector; // We abuse b_blocknr here.
- bh->b_size = size;
- bh->b_rsector = sector;
- bh->b_rdev = mdev->md_device;
- bh->b_private = mdev;
+ drbd_bh_prepare(mdev,bh,sector,size);
+ set_bit(BH_Uptodate,&bh->b_state);
+ set_bit(BH_Dirty,&bh->b_state);
bh->b_end_io = drbd_dio_end_sec;
-
- set_bit(BH_Dirty, &bh->b_state);
- set_bit(BH_Req, &bh->b_state);
- set_bit(BH_Launder, &bh->b_state);
- set_bit(BH_Lock, &bh->b_state);
}
static inline void
@@ -205,18 +205,27 @@
{
struct buffer_head * const bh = &e->private_bio;
- bh->b_blocknr = sector; // We abuse b_blocknr here.
- bh->b_size = size;
- bh->b_rsector = sector;
- bh->b_rdev = mdev->md_device;
- bh->b_private = mdev;
+ drbd_bh_prepare(mdev,bh,sector,size);
bh->b_end_io = enslaved_read_bi_end_io;
+}
- clear_bit(BH_Uptodate, &e->private_bio.b_state);
- set_bit(BH_Dirty, &bh->b_state);
- set_bit(BH_Req, &bh->b_state);
- set_bit(BH_Launder, &bh->b_state);
- set_bit(BH_Lock, &bh->b_state);
+static inline void
+drbd_bh_clone(struct buffer_head *bh, struct buffer_head *bh_src)
+{
+ memset(bh,0,sizeof(*bh));
+ bh->b_list = bh_src->b_list; // BUF_LOCKED;
+ bh->b_size = bh_src->b_size;
+ bh->b_state = bh_src->b_state & ((1 << BH_PrivateStart)-1);
+ bh->b_page = bh_src->b_page;
+ bh->b_data = bh_src->b_data;
+ bh->b_rsector = bh_src->b_rsector;
+ bh->b_blocknr = bh_src->b_rsector; // We abuse b_blocknr here.
+ bh->b_dev = bh_src->b_dev; // hint for LVM as to
+ // which device to call fsync_dev
+ // on for snapshots
+ atomic_set(&bh->b_count, 1);
+ init_waitqueue_head(&bh->b_wait);
+ // other members stay NULL
}
static inline void
@@ -224,45 +233,63 @@
{
struct buffer_head * const bh = &req->private_bio;
struct buffer_head * const bh_src = req->master_bio;
- memset(bh, 0, sizeof(struct buffer_head));
- bh->b_list = bh_src->b_list; // BUF_LOCKED;
- bh->b_size = bh_src->b_size;
- bh->b_state = bh_src->b_state & ((1 << BH_PrivateStart)-1);
- bh->b_page = bh_src->b_page;
- bh->b_data = bh_src->b_data;
- bh->b_rsector = bh_src->b_rsector;
- bh->b_blocknr = bh_src->b_rsector; // We abuse b_blocknr here.
- bh->b_dev = bh_src->b_dev; // so LVM has a hint as to
- // which device to call fsync_dev
- // on for snapshots
- bh->b_rdev = mdev->lo_device;
- bh->b_private = mdev;
- bh->b_end_io = drbd_dio_end;
+ drbd_bh_clone(bh,bh_src);
+ bh->b_rdev = mdev->lo_device;
+ bh->b_private = mdev;
+ bh->b_end_io = drbd_dio_end;
- atomic_set(&bh->b_count, 1);
- init_waitqueue_head(&bh->b_wait);
+ D_ASSERT(buffer_req(bh));
+ D_ASSERT(buffer_launder(bh));
+ D_ASSERT(buffer_locked(bh));
+ D_ASSERT(buffer_mapped(bh));
+ // D_ASSERT(buffer_dirty(bh)); // It is not true ?!?
+ D_ASSERT(buffer_uptodate(bh));
- // other members stay NULL
+ // FIXME should not be necessary
+ bh->b_state = (1 << BH_Uptodate)
+ |(1 << BH_Dirty)
+ |(1 << BH_Lock)
+ |(1 << BH_Req)
+ |(1 << BH_Mapped) ;
+
+ req->rq_status = RQ_DRBD_NOTHING;
+}
+
+#if 0
+/* not yet used
+ */
+static inline void
+drbd_req_prepare_read(drbd_dev *mdev, struct drbd_request *req)
+{
+ struct buffer_head * const bh = &req->private_bio;
+ struct buffer_head * const bh_src = req->master_bio;
+
+ drbd_bh_clone(bh,bh_src);
+ bh->b_rdev = mdev->lo_device;
+ bh->b_private = mdev;
+ bh->b_end_io = drbd_read_end_io;
D_ASSERT(buffer_req(bh));
D_ASSERT(buffer_launder(bh));
D_ASSERT(buffer_locked(bh));
D_ASSERT(buffer_mapped(bh));
- // D_ASSERT(buffer_dirty(bh)); // It is not true ?!?
+ D_ASSERT(!buffer_uptodate(bh));
// FIXME should not be necessary
- bh->b_state = (1 << BH_Dirty) | ( 1 << BH_Mapped) | (1 << BH_Lock);
+ bh->b_state = (1 << BH_Lock)
+ |(1 << BH_Req)
+ |(1 << BH_Mapped) ;
req->rq_status = RQ_DRBD_NOTHING;
}
+#endif
static inline void
drbd_bio_add_page(struct buffer_head *bh, struct page *page, unsigned long offset)
{
set_bh_page (bh,page,offset);
bh->b_this_page = bh;
-
}
static inline struct page* drbd_bio_get_page(struct buffer_head *bh)