patch-2.4.27 linux-2.4.27/drivers/s390/char/tapechar.c
Next file: linux-2.4.27/drivers/s390/net/ctcmain.c
Previous file: linux-2.4.27/drivers/s390/block/dasd.c
Back to the patch index
Back to the overall index
- Lines: 46
- Date:
2004-08-07 16:26:05.346375212 -0700
- Orig file:
linux-2.4.26/drivers/s390/char/tapechar.c
- Orig date:
2001-11-09 14:05:02.000000000 -0800
diff -urN linux-2.4.26/drivers/s390/char/tapechar.c linux-2.4.27/drivers/s390/char/tapechar.c
@@ -161,6 +161,7 @@
size_t block_size;
ccw_req_t *cqr;
int rc;
+ loff_t pos = *ppos;
#ifdef TAPE_DEBUG
debug_text_event (tape_debug_area,6,"c:read");
#endif /* TAPE_DEBUG */
@@ -230,7 +231,7 @@
debug_text_event (tape_debug_area,6,"c:rbytes:");
debug_int_event (tape_debug_area,6,block_size - ti->devstat.rescnt);
#endif /* TAPE_DEBUG */
- filp->f_pos += block_size - ti->devstat.rescnt;
+ *ppos = pos + (block_size - ti->devstat.rescnt);
return block_size - ti->devstat.rescnt;
}
@@ -246,6 +247,8 @@
ccw_req_t *cqr;
int nblocks, i, rc;
size_t written = 0;
+ loff_t pos = *ppos;
+
#ifdef TAPE_DEBUG
debug_text_event (tape_debug_area,6,"c:write");
#endif
@@ -318,15 +321,17 @@
debug_text_event (tape_debug_area,6,"c:wbytes:");
debug_int_event (tape_debug_area,6,block_size - ti->devstat.rescnt);
#endif
- filp->f_pos += block_size - ti->devstat.rescnt;
written += block_size - ti->devstat.rescnt;
- if (ti->devstat.rescnt > 0)
+ if (ti->devstat.rescnt > 0) {
+ *ppos = pos + written;
return written;
+ }
}
#ifdef TAPE_DEBUG
debug_text_event (tape_debug_area,6,"c:wtotal:");
debug_int_event (tape_debug_area,6,written);
#endif
+ *ppos = pos + written;
return written;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)