From: yangkai Date: Wed, 31 Aug 2011 02:24:26 +0000 (+0800) Subject: change msc buffer flush depends on usb packets X-Git-Tag: firefly_0821_release~9767^2~77 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6a8deefc1c0669dc4a273324c61b0003ac2bb607;p=firefly-linux-kernel-4.4.55.git change msc buffer flush depends on usb packets --- diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c old mode 100644 new mode 100755 index 71798209bc83..32bf6fcc625e --- a/drivers/usb/gadget/f_mass_storage.c +++ b/drivers/usb/gadget/f_mass_storage.c @@ -84,7 +84,8 @@ #define BULK_BUFFER_SIZE 16384 * 4//4096 /* flush after every 4 meg of writes to avoid excessive block level caching */ -#define MAX_UNFLUSHED_BYTES (512 * 1024)// (4 * 1024 * 1024) //original value is 4MB,Modifyed by xbw at 2011-08-18 +//#define MAX_UNFLUSHED_BYTES (512 * 1024)// (4 * 1024 * 1024) //original value is 4MB,Modifyed by xbw at 2011-08-18 +#define MAX_UNFLUSHED_PACKETS 16 /*-------------------------------------------------------------------------*/ @@ -233,7 +234,7 @@ struct lun { struct file *filp; loff_t file_length; loff_t num_sectors; - unsigned int unflushed_bytes; + unsigned int unflushed_packet; unsigned int ro : 1; unsigned int prevent_medium_removal : 1; @@ -1079,10 +1080,10 @@ static int do_write(struct fsg_dev *fsg) fsg->residue -= nwritten; #ifdef MAX_UNFLUSHED_BYTES - curlun->unflushed_bytes += nwritten; - if (curlun->unflushed_bytes >= MAX_UNFLUSHED_BYTES) { + curlun->unflushed_packet ++; + if (curlun->unflushed_packet >= MAX_UNFLUSHED_PACKETS) { fsync_sub(curlun); - curlun->unflushed_bytes = 0; + curlun->unflushed_packet = 0; } #endif /* If an error occurred, report it and its position */ @@ -2754,7 +2755,7 @@ static int open_backing_file(struct fsg_dev *fsg, struct lun *curlun, curlun->ro = ro; curlun->filp = filp; curlun->file_length = size; - curlun->unflushed_bytes = 0; + curlun->unflushed_packet = 0; curlun->num_sectors = num_sectors; LDBG(curlun, "open backing file: %s size: %lld num_sectors: %lld\n", filename, size, num_sectors);