[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH v2 1/8] kernel2: lio_seek ohne Veränderung auch für non-seekable erlauben



* kernel2: Es gibt Aufrufer, die lio_seek() mit LIO_SEEK_CUR und
  offset = 0 aufrufen, um die aktuelle Position des Dateizeigers
  herauszufinden. Das ist auch in Ordnung, wenn die Ressource eigentlich
  keine Seeks kann.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/kernel2/src/lostio/client.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/kernel2/src/lostio/client.c b/src/kernel2/src/lostio/client.c
index 545467b..4673a27 100644
--- a/src/kernel2/src/lostio/client.c
+++ b/src/kernel2/src/lostio/client.c
@@ -472,7 +472,13 @@ out:
  */
 int64_t lio_seek(struct lio_stream* s, int64_t offset, int whence)
 {
-    if ((s->res_read != s->res_write) || !s->res_read->seekable) {
+    if (s->res_read != s->res_write) {
+        return -EINVAL;
+    }
+
+    /* LIO_SEEK_CUR zum Herausfinden der aktuellen Position geht auch auf
+     * Ressourcen, die eigentlich kein seek unterstützen. */
+    if (!s->res_read->seekable && (whence != LIO_SEEK_CUR || offset)) {
         return -EINVAL;
     }
 
-- 
2.1.4