Skip to content

Commit b36ddb9

Browse files
committed
Merge tag 'for-linus-6.15-ofs2' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux
Pull orangefs fix from Mike Marshall: "Fix for orangefs page writeout counting" * tag 'for-linus-6.15-ofs2' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux: orangefs: adjust counting code to recover from 665575c
2 parents a5806cd + 219bf6e commit b36ddb9

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

fs/orangefs/inode.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,13 @@ static int orangefs_writepage_locked(struct folio *folio,
3232
len = i_size_read(inode);
3333
if (folio->private) {
3434
wr = folio->private;
35-
WARN_ON(wr->pos >= len);
3635
off = wr->pos;
37-
if (off + wr->len > len)
36+
if ((off + wr->len > len) && (off <= len))
3837
wlen = len - off;
3938
else
4039
wlen = wr->len;
40+
if (wlen == 0)
41+
wlen = wr->len;
4142
} else {
4243
WARN_ON(1);
4344
off = folio_pos(folio);
@@ -46,8 +47,6 @@ static int orangefs_writepage_locked(struct folio *folio,
4647
if (wlen > len - off)
4748
wlen = len - off;
4849
}
49-
/* Should've been handled in orangefs_invalidate_folio. */
50-
WARN_ON(off == len || off + wlen > len);
5150

5251
WARN_ON(wlen == 0);
5352
bvec_set_folio(&bv, folio, wlen, offset_in_folio(folio, off));
@@ -320,6 +319,8 @@ static int orangefs_write_begin(struct file *file,
320319
wr->len += len;
321320
goto okay;
322321
} else {
322+
wr->pos = pos;
323+
wr->len = len;
323324
ret = orangefs_launder_folio(folio);
324325
if (ret)
325326
return ret;

0 commit comments

Comments
 (0)