mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 21:47:45 +00:00
STABLE14-linux-write-dirty-pages-once-20051015
FIXES 20561 this time for sure, only write back once (cherry picked from commit 7d0647d5ee9ae0d9b003f0e0c765522aa1433d23)
This commit is contained in:
parent
fbf16a7206
commit
d7886b0ba2
@ -126,12 +126,7 @@ afs_linux_write(struct file *fp, const char *buf, size_t count, loff_t * offp)
|
||||
}
|
||||
|
||||
ObtainWriteLock(&vcp->lock, 530);
|
||||
vcp->m.Date = osi_Time(); /* set modification time */
|
||||
afs_FakeClose(vcp, credp);
|
||||
if (code >= 0)
|
||||
code2 = afs_DoPartialWrite(vcp, &treq);
|
||||
if (code2 && code >= 0)
|
||||
code = (ssize_t) - code2;
|
||||
ReleaseWriteLock(&vcp->lock);
|
||||
|
||||
afs_Trace4(afs_iclSetp, CM_TRACE_WRITEOP, ICL_TYPE_POINTER, vcp,
|
||||
@ -1475,6 +1470,25 @@ afs_linux_updatepage(struct file *fp, struct page *pp, unsigned long offset,
|
||||
ip->i_size = vcp->m.Length;
|
||||
ip->i_blocks = ((vcp->m.Length + 1023) >> 10) << 1;
|
||||
|
||||
if (!code) {
|
||||
struct vrequest treq;
|
||||
|
||||
ObtainWriteLock(&vcp->lock, 533);
|
||||
vcp->m.Date = osi_Time(); /* set modification time */
|
||||
if (!afs_InitReq(&treq, credp))
|
||||
code = afs_DoPartialWrite(vcp, &treq);
|
||||
ReleaseWriteLock(&vcp->lock);
|
||||
}
|
||||
if (!code) {
|
||||
struct vrequest treq;
|
||||
|
||||
ObtainWriteLock(&vcp->lock, 533);
|
||||
vcp->m.Date = osi_Time(); /* set modification time */
|
||||
if (!afs_InitReq(&treq, credp))
|
||||
code = afs_DoPartialWrite(vcp, &treq);
|
||||
ReleaseWriteLock(&vcp->lock);
|
||||
}
|
||||
|
||||
code = code ? -code : count - tuio.uio_resid;
|
||||
afs_Trace4(afs_iclSetp, CM_TRACE_UPDATEPAGE, ICL_TYPE_POINTER, vcp,
|
||||
ICL_TYPE_POINTER, pp, ICL_TYPE_INT32, page_count(pp),
|
||||
|
Loading…
x
Reference in New Issue
Block a user