1#ifndef _DRBD_WRAPPERS_H 2#define _DRBD_WRAPPERS_H 3 4#include <linux/ctype.h> 5#include <linux/mm.h> 6 7/* see get_sb_bdev and bd_claim */ 8extern char *drbd_sec_holder; 9 10/* sets the number of 512 byte sectors of our virtual device */ 11static inline void drbd_set_my_capacity(struct drbd_conf *mdev, 12 sector_t size) 13{ 14 /* set_capacity(mdev->this_bdev->bd_disk, size); */ 15 set_capacity(mdev->vdisk, size); 16 mdev->this_bdev->bd_inode->i_size = (loff_t)size << 9; 17} 18 19#define drbd_bio_uptodate(bio) bio_flagged(bio, BIO_UPTODATE) 20 21/* bi_end_io handlers */ 22extern void drbd_md_io_complete(struct bio *bio, int error); 23extern void drbd_endio_sec(struct bio *bio, int error); 24extern void drbd_endio_pri(struct bio *bio, int error); 25 26/* 27 * used to submit our private bio 28 */ 29static inline void drbd_generic_make_request(struct drbd_conf *mdev, 30 int fault_type, struct bio *bio) 31{ 32 __release(local); 33 if (!bio->bi_bdev) { 34 printk(KERN_ERR "drbd%d: drbd_generic_make_request: " 35 "bio->bi_bdev == NULL\n", 36 mdev_to_minor(mdev)); 37 dump_stack(); 38 bio_endio(bio, -ENODEV); 39 return; 40 } 41 42 if (FAULT_ACTIVE(mdev, fault_type)) 43 bio_endio(bio, -EIO); 44 else 45 generic_make_request(bio); 46} 47 48static inline void drbd_plug_device(struct drbd_conf *mdev) 49{ 50 struct request_queue *q; 51 q = bdev_get_queue(mdev->this_bdev); 52 53 spin_lock_irq(q->queue_lock); 54 55 56 if (!blk_queue_plugged(q)) { 57 blk_plug_device(q); 58 del_timer(&q->unplug_timer); 59 /* unplugging should not happen automatically... */ 60 } 61 spin_unlock_irq(q->queue_lock); 62} 63 64static inline int drbd_crypto_is_hash(struct crypto_tfm *tfm) 65{ 66 return (crypto_tfm_alg_type(tfm) & CRYPTO_ALG_TYPE_HASH_MASK) 67 == CRYPTO_ALG_TYPE_HASH; 68} 69 70#ifndef __CHECKER__ 71# undef __cond_lock 72# define __cond_lock(x,c) (c) 73#endif 74 75#endif 76