[PATCH v3 14/27] ubifs: io: introduce ubifs_read function to read ubi volume
Dongsheng Yang
yangds.fnst at cn.fujitsu.com
Thu Nov 12 22:13:25 PST 2015
Implement a ubifs_read function in io lib. This function
will read the data at offset in length of len from ubi volume
to buf.
Signed-off-by: Dongsheng Yang <yangds.fnst at cn.fujitsu.com>
---
ubifs-utils/include/io.h | 2 ++
ubifs-utils/lib/io.c | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/ubifs-utils/include/io.h b/ubifs-utils/include/io.h
index 920645d..11f568c 100644
--- a/ubifs-utils/include/io.h
+++ b/ubifs-utils/include/io.h
@@ -16,4 +16,6 @@ int write_leb(struct ubifs_info *c, int lnum, int len, void *buf);
int close_target(void);
int open_target(struct ubifs_info *c, int yes);
int open_ubi(struct ubifs_info *c, const char *node);
+
+int ubifs_read(loff_t offset, int len, void *buf);
#endif
diff --git a/ubifs-utils/lib/io.c b/ubifs-utils/lib/io.c
index 9817d2a..d05cf86 100644
--- a/ubifs-utils/lib/io.c
+++ b/ubifs-utils/lib/io.c
@@ -132,3 +132,21 @@ int write_leb(struct ubifs_info *c, int lnum, int len, void *buf)
return 0;
}
+
+/**
+ * ubifs_read - read data from ubi volume.
+ * @offset: offset of data in volume
+ * @len: length of data in the buffer
+ * @buf: buffer (must be at least c->leb_size bytes)
+ */
+int ubifs_read(loff_t offset, int len, void *buf)
+{
+ if (lseek(out_fd, offset, SEEK_SET) != offset)
+ return sys_err_msg("lseek failed seeking %"PRIdoff_t, offset);
+
+ if (read(out_fd, buf, len) != len)
+ return sys_err_msg("write failed writing %d bytes at pos %"PRIdoff_t,
+ len, offset);
+
+ return 0;
+}
--
1.8.4.2
More information about the linux-mtd
mailing list