From: James Bottomley Date: Sun, 28 Aug 2005 15:43:07 +0000 (-0500) Subject: fix mismerge in ll_rw_blk.c X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=31151ba2cef171344beac254e65bd7e00138bb0d;p=openwrt%2Fstaging%2Fblogic.git fix mismerge in ll_rw_blk.c --- 31151ba2cef171344beac254e65bd7e00138bb0d diff --cc drivers/block/ll_rw_blk.c index 3c818544475e,f6fda036b4ae..0c7599563b65 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@@ -2277,7 -2347,45 +2373,45 @@@ int blkdev_issue_flush(struct block_dev EXPORT_SYMBOL(blkdev_issue_flush); + /** + * blkdev_scsi_issue_flush_fn - issue flush for SCSI devices + * @q: device queue + * @disk: gendisk + * @error_sector: error offset + * + * Description: + * Devices understanding the SCSI command set, can use this function as + * a helper for issuing a cache flush. Note: driver is required to store + * the error offset (in case of error flushing) in ->sector of struct + * request. + */ + int blkdev_scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk, + sector_t *error_sector) + { + struct request *rq = blk_get_request(q, WRITE, __GFP_WAIT); + int ret; + + rq->flags |= REQ_BLOCK_PC | REQ_SOFTBARRIER; + rq->sector = 0; + memset(rq->cmd, 0, sizeof(rq->cmd)); + rq->cmd[0] = 0x35; + rq->cmd_len = 12; + rq->data = NULL; + rq->data_len = 0; + rq->timeout = 60 * HZ; + + ret = blk_execute_rq(q, disk, rq, 0); + + if (ret && error_sector) + *error_sector = rq->sector; + + blk_put_request(rq); + return ret; + } + + EXPORT_SYMBOL(blkdev_scsi_issue_flush_fn); + -void drive_stat_acct(struct request *rq, int nr_sectors, int new_io) +static void drive_stat_acct(struct request *rq, int nr_sectors, int new_io) { int rw = rq_data_dir(rq);