On Mon, Aug 04, 2014 at 10:48:28PM -0400, Theodore Ts'o wrote:
> Ok, do the following:
> 
> git clone -b retry-write git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git 
> e2fsprogs-retry
>
>

I had a look at the code just a few lines after your change, and something 
struck me. The code starts at line 258:
258         while (size > 0) {
259                 if (size < channel->block_size) {
260                         actual = read(data->dev, data->bounce,
261                                       channel->block_size);
262                         if (actual != channel->block_size) {
263                                 retval = EXT2_ET_SHORT_READ;
264                                 goto error_out;
265                         }
266                 }
267                 actual = size;
268                 if (size > channel->block_size)
269                         actual = channel->block_size;
270                 memcpy(data->bounce, buf, actual);
271                 actual = write(data->dev, data->bounce, 
channel->block_size);
272                 if (actual != channel->block_size)
273                         goto short_write;
274                 size -= actual;
275                 buf += actual;
276         }


Now - I have no idea, if the buffer/size is aligned, but if it is not, then the 
issue might repeat. 
Should the same retry patch be put here, somwhere around line 272?

BR,

M.W.

Attachment: signature.asc
Description: Digital signature

Reply via email to