diff options
| author | James Bottomley <James.Bottomley@suse.de> | 2010-12-23 00:29:40 -0500 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2010-12-23 00:29:40 -0500 |
| commit | ce82ba80477c2cf3576f1e42c4c377e9995633a7 (patch) | |
| tree | 952eb80032c38e8a104015c3497bff2d09857af5 /include/linux | |
| parent | 5f7bb3a439ce51ae8b92ca1dc93b91712224b69a (diff) | |
| parent | 047b7bdab951b76d19b44388e35cf579ef91e448 (diff) | |
Merge branch 'block'
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/blkdev.h | 4 | ||||
| -rw-r--r-- | include/linux/cdrom.h | 6 | ||||
| -rw-r--r-- | include/linux/fs.h | 26 | ||||
| -rw-r--r-- | include/linux/genhd.h | 20 |
4 files changed, 40 insertions, 16 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index aae86fd10c4f..05667e6989f1 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -643,7 +643,6 @@ static inline void rq_flush_dcache_pages(struct request *rq) | |||
| 643 | 643 | ||
| 644 | extern int blk_register_queue(struct gendisk *disk); | 644 | extern int blk_register_queue(struct gendisk *disk); |
| 645 | extern void blk_unregister_queue(struct gendisk *disk); | 645 | extern void blk_unregister_queue(struct gendisk *disk); |
| 646 | extern void register_disk(struct gendisk *dev); | ||
| 647 | extern void generic_make_request(struct bio *bio); | 646 | extern void generic_make_request(struct bio *bio); |
| 648 | extern void blk_rq_init(struct request_queue *q, struct request *rq); | 647 | extern void blk_rq_init(struct request_queue *q, struct request *rq); |
| 649 | extern void blk_put_request(struct request *); | 648 | extern void blk_put_request(struct request *); |
| @@ -1252,6 +1251,9 @@ struct block_device_operations { | |||
| 1252 | int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); | 1251 | int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); |
| 1253 | int (*direct_access) (struct block_device *, sector_t, | 1252 | int (*direct_access) (struct block_device *, sector_t, |
| 1254 | void **, unsigned long *); | 1253 | void **, unsigned long *); |
| 1254 | unsigned int (*check_events) (struct gendisk *disk, | ||
| 1255 | unsigned int clearing); | ||
| 1256 | /* ->media_changed() is DEPRECATED, use ->check_events() instead */ | ||
| 1255 | int (*media_changed) (struct gendisk *); | 1257 | int (*media_changed) (struct gendisk *); |
| 1256 | void (*unlock_native_capacity) (struct gendisk *); | 1258 | void (*unlock_native_capacity) (struct gendisk *); |
| 1257 | int (*revalidate_disk) (struct gendisk *); | 1259 | int (*revalidate_disk) (struct gendisk *); |
diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h index 78e904796622..35eae4b67503 100644 --- a/include/linux/cdrom.h +++ b/include/linux/cdrom.h | |||
| @@ -946,6 +946,8 @@ struct cdrom_device_info { | |||
| 946 | /* device-related storage */ | 946 | /* device-related storage */ |
| 947 | unsigned int options : 30; /* options flags */ | 947 | unsigned int options : 30; /* options flags */ |
| 948 | unsigned mc_flags : 2; /* media change buffer flags */ | 948 | unsigned mc_flags : 2; /* media change buffer flags */ |
| 949 | unsigned int vfs_events; /* cached events for vfs path */ | ||
| 950 | unsigned int ioctl_events; /* cached events for ioctl path */ | ||
| 949 | int use_count; /* number of times device opened */ | 951 | int use_count; /* number of times device opened */ |
| 950 | char name[20]; /* name of the device type */ | 952 | char name[20]; /* name of the device type */ |
| 951 | /* per-device flags */ | 953 | /* per-device flags */ |
| @@ -965,6 +967,8 @@ struct cdrom_device_ops { | |||
| 965 | int (*open) (struct cdrom_device_info *, int); | 967 | int (*open) (struct cdrom_device_info *, int); |
| 966 | void (*release) (struct cdrom_device_info *); | 968 | void (*release) (struct cdrom_device_info *); |
| 967 | int (*drive_status) (struct cdrom_device_info *, int); | 969 | int (*drive_status) (struct cdrom_device_info *, int); |
| 970 | unsigned int (*check_events) (struct cdrom_device_info *cdi, | ||
| 971 | unsigned int clearing, int slot); | ||
| 968 | int (*media_changed) (struct cdrom_device_info *, int); | 972 | int (*media_changed) (struct cdrom_device_info *, int); |
| 969 | int (*tray_move) (struct cdrom_device_info *, int); | 973 | int (*tray_move) (struct cdrom_device_info *, int); |
| 970 | int (*lock_door) (struct cdrom_device_info *, int); | 974 | int (*lock_door) (struct cdrom_device_info *, int); |
| @@ -993,6 +997,8 @@ extern int cdrom_open(struct cdrom_device_info *cdi, struct block_device *bdev, | |||
| 993 | extern void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode); | 997 | extern void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode); |
| 994 | extern int cdrom_ioctl(struct cdrom_device_info *cdi, struct block_device *bdev, | 998 | extern int cdrom_ioctl(struct cdrom_device_info *cdi, struct block_device *bdev, |
| 995 | fmode_t mode, unsigned int cmd, unsigned long arg); | 999 | fmode_t mode, unsigned int cmd, unsigned long arg); |
| 1000 | extern unsigned int cdrom_check_events(struct cdrom_device_info *cdi, | ||
| 1001 | unsigned int clearing); | ||
| 996 | extern int cdrom_media_changed(struct cdrom_device_info *); | 1002 | extern int cdrom_media_changed(struct cdrom_device_info *); |
| 997 | 1003 | ||
| 998 | extern int register_cdrom(struct cdrom_device_info *cdi); | 1004 | extern int register_cdrom(struct cdrom_device_info *cdi); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 090f0eacde29..34209283eab6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -663,8 +663,9 @@ struct block_device { | |||
| 663 | void * bd_claiming; | 663 | void * bd_claiming; |
| 664 | void * bd_holder; | 664 | void * bd_holder; |
| 665 | int bd_holders; | 665 | int bd_holders; |
| 666 | bool bd_write_holder; | ||
| 666 | #ifdef CONFIG_SYSFS | 667 | #ifdef CONFIG_SYSFS |
| 667 | struct list_head bd_holder_list; | 668 | struct gendisk * bd_holder_disk; /* for sysfs slave linkng */ |
| 668 | #endif | 669 | #endif |
| 669 | struct block_device * bd_contains; | 670 | struct block_device * bd_contains; |
| 670 | unsigned bd_block_size; | 671 | unsigned bd_block_size; |
| @@ -2006,7 +2007,6 @@ extern struct block_device *bdgrab(struct block_device *bdev); | |||
| 2006 | extern void bd_set_size(struct block_device *, loff_t size); | 2007 | extern void bd_set_size(struct block_device *, loff_t size); |
| 2007 | extern void bd_forget(struct inode *inode); | 2008 | extern void bd_forget(struct inode *inode); |
| 2008 | extern void bdput(struct block_device *); | 2009 | extern void bdput(struct block_device *); |
| 2009 | extern struct block_device *open_by_devnum(dev_t, fmode_t); | ||
| 2010 | extern void invalidate_bdev(struct block_device *); | 2010 | extern void invalidate_bdev(struct block_device *); |
| 2011 | extern int sync_blockdev(struct block_device *bdev); | 2011 | extern int sync_blockdev(struct block_device *bdev); |
| 2012 | extern struct super_block *freeze_bdev(struct block_device *); | 2012 | extern struct super_block *freeze_bdev(struct block_device *); |
| @@ -2037,16 +2037,20 @@ extern const struct file_operations def_fifo_fops; | |||
| 2037 | extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); | 2037 | extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); |
| 2038 | extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long); | 2038 | extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long); |
| 2039 | extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); | 2039 | extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); |
| 2040 | extern int blkdev_get(struct block_device *, fmode_t); | 2040 | extern int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder); |
| 2041 | extern int blkdev_put(struct block_device *, fmode_t); | 2041 | extern struct block_device *blkdev_get_by_path(const char *path, fmode_t mode, |
| 2042 | extern int bd_claim(struct block_device *, void *); | 2042 | void *holder); |
| 2043 | extern void bd_release(struct block_device *); | 2043 | extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, |
| 2044 | void *holder); | ||
| 2045 | extern int blkdev_put(struct block_device *bdev, fmode_t mode); | ||
| 2044 | #ifdef CONFIG_SYSFS | 2046 | #ifdef CONFIG_SYSFS |
| 2045 | extern int bd_claim_by_disk(struct block_device *, void *, struct gendisk *); | 2047 | extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); |
| 2046 | extern void bd_release_from_disk(struct block_device *, struct gendisk *); | ||
| 2047 | #else | 2048 | #else |
| 2048 | #define bd_claim_by_disk(bdev, holder, disk) bd_claim(bdev, holder) | 2049 | static inline int bd_link_disk_holder(struct block_device *bdev, |
| 2049 | #define bd_release_from_disk(bdev, disk) bd_release(bdev) | 2050 | struct gendisk *disk) |
| 2051 | { | ||
| 2052 | return 0; | ||
| 2053 | } | ||
| 2050 | #endif | 2054 | #endif |
| 2051 | #endif | 2055 | #endif |
| 2052 | 2056 | ||
| @@ -2082,8 +2086,6 @@ static inline void unregister_chrdev(unsigned int major, const char *name) | |||
| 2082 | extern const char *__bdevname(dev_t, char *buffer); | 2086 | extern const char *__bdevname(dev_t, char *buffer); |
| 2083 | extern const char *bdevname(struct block_device *bdev, char *buffer); | 2087 | extern const char *bdevname(struct block_device *bdev, char *buffer); |
| 2084 | extern struct block_device *lookup_bdev(const char *); | 2088 | extern struct block_device *lookup_bdev(const char *); |
| 2085 | extern struct block_device *open_bdev_exclusive(const char *, fmode_t, void *); | ||
| 2086 | extern void close_bdev_exclusive(struct block_device *, fmode_t); | ||
| 2087 | extern void blkdev_show(struct seq_file *,off_t); | 2089 | extern void blkdev_show(struct seq_file *,off_t); |
| 2088 | 2090 | ||
| 2089 | #else | 2091 | #else |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 7a7b9c1644e4..13893aa2ac9d 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
| @@ -127,6 +127,11 @@ struct hd_struct { | |||
| 127 | #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ | 127 | #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ |
| 128 | #define GENHD_FL_NATIVE_CAPACITY 128 | 128 | #define GENHD_FL_NATIVE_CAPACITY 128 |
| 129 | 129 | ||
| 130 | enum { | ||
| 131 | DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ | ||
| 132 | DISK_EVENT_EJECT_REQUEST = 1 << 1, /* eject requested */ | ||
| 133 | }; | ||
| 134 | |||
| 130 | #define BLK_SCSI_MAX_CMDS (256) | 135 | #define BLK_SCSI_MAX_CMDS (256) |
| 131 | #define BLK_SCSI_CMD_PER_LONG (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8)) | 136 | #define BLK_SCSI_CMD_PER_LONG (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8)) |
| 132 | 137 | ||
| @@ -143,6 +148,8 @@ struct disk_part_tbl { | |||
| 143 | struct hd_struct __rcu *part[]; | 148 | struct hd_struct __rcu *part[]; |
| 144 | }; | 149 | }; |
| 145 | 150 | ||
| 151 | struct disk_events; | ||
| 152 | |||
| 146 | struct gendisk { | 153 | struct gendisk { |
| 147 | /* major, first_minor and minors are input parameters only, | 154 | /* major, first_minor and minors are input parameters only, |
| 148 | * don't use directly. Use disk_devt() and disk_max_parts(). | 155 | * don't use directly. Use disk_devt() and disk_max_parts(). |
| @@ -154,6 +161,10 @@ struct gendisk { | |||
| 154 | 161 | ||
| 155 | char disk_name[DISK_NAME_LEN]; /* name of major driver */ | 162 | char disk_name[DISK_NAME_LEN]; /* name of major driver */ |
| 156 | char *(*devnode)(struct gendisk *gd, mode_t *mode); | 163 | char *(*devnode)(struct gendisk *gd, mode_t *mode); |
| 164 | |||
| 165 | unsigned int events; /* supported events */ | ||
| 166 | unsigned int async_events; /* async events, subset of all */ | ||
| 167 | |||
| 157 | /* Array of pointers to partitions indexed by partno. | 168 | /* Array of pointers to partitions indexed by partno. |
| 158 | * Protected with matching bdev lock but stat and other | 169 | * Protected with matching bdev lock but stat and other |
| 159 | * non-critical accesses use RCU. Always access through | 170 | * non-critical accesses use RCU. Always access through |
| @@ -171,9 +182,8 @@ struct gendisk { | |||
| 171 | struct kobject *slave_dir; | 182 | struct kobject *slave_dir; |
| 172 | 183 | ||
| 173 | struct timer_rand_state *random; | 184 | struct timer_rand_state *random; |
| 174 | |||
| 175 | atomic_t sync_io; /* RAID */ | 185 | atomic_t sync_io; /* RAID */ |
| 176 | struct work_struct async_notify; | 186 | struct disk_events *ev; |
| 177 | #ifdef CONFIG_BLK_DEV_INTEGRITY | 187 | #ifdef CONFIG_BLK_DEV_INTEGRITY |
| 178 | struct blk_integrity *integrity; | 188 | struct blk_integrity *integrity; |
| 179 | #endif | 189 | #endif |
| @@ -395,7 +405,6 @@ extern void part_round_stats(int cpu, struct hd_struct *part); | |||
| 395 | /* block/genhd.c */ | 405 | /* block/genhd.c */ |
| 396 | extern void add_disk(struct gendisk *disk); | 406 | extern void add_disk(struct gendisk *disk); |
| 397 | extern void del_gendisk(struct gendisk *gp); | 407 | extern void del_gendisk(struct gendisk *gp); |
| 398 | extern void unlink_gendisk(struct gendisk *gp); | ||
| 399 | extern struct gendisk *get_gendisk(dev_t dev, int *partno); | 408 | extern struct gendisk *get_gendisk(dev_t dev, int *partno); |
| 400 | extern struct block_device *bdget_disk(struct gendisk *disk, int partno); | 409 | extern struct block_device *bdget_disk(struct gendisk *disk, int partno); |
| 401 | 410 | ||
| @@ -407,6 +416,11 @@ static inline int get_disk_ro(struct gendisk *disk) | |||
| 407 | return disk->part0.policy; | 416 | return disk->part0.policy; |
| 408 | } | 417 | } |
| 409 | 418 | ||
| 419 | extern void disk_block_events(struct gendisk *disk); | ||
| 420 | extern void disk_unblock_events(struct gendisk *disk); | ||
| 421 | extern void disk_check_events(struct gendisk *disk); | ||
| 422 | extern unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask); | ||
| 423 | |||
| 410 | /* drivers/char/random.c */ | 424 | /* drivers/char/random.c */ |
| 411 | extern void add_disk_randomness(struct gendisk *disk); | 425 | extern void add_disk_randomness(struct gendisk *disk); |
| 412 | extern void rand_initialize_disk(struct gendisk *disk); | 426 | extern void rand_initialize_disk(struct gendisk *disk); |
