[U-Boot] [PATCH v3 10/26] fs: fat: support write with non-zero offset
Akashi, Takahiro
takahiro.akashi at linaro.org
Wed Sep 12 02:14:34 UTC 2018
On Tue, Sep 11, 2018 at 01:09:43PM +0200, Alexander Graf wrote:
>
>
> On 11.09.18 08:59, Akashi, Takahiro wrote:
> > From: AKASHI Takahiro <takahiro.akashi at linaro.org>
> >
> > In this patch, all the necessary code for allowing for a file offset
> > at write is implemented. What plays a major roll here is get_set_cluster(),
> > which, in contrast to its counterpart, set_cluster(), only operates on
> > already-allocated clusters, overwriting with data.
> >
> > So, with a file offset specified, set_contents() seeks and writes data
> > with set_get_cluster() until the end of a file, and, once it reaches
> > there, continues writing with set_cluster() for the rest.
> >
> > Please note that a file will be trimmed as a result of write operation if
> > write ends before reaching file's end. This is an intended behavior
> > in order to maintain compatibility with the current interface.
> >
> > Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> > ---
> > fs/fat/fat_write.c | 288 ++++++++++++++++++++++++++++++++++++++++++---
> > 1 file changed, 273 insertions(+), 15 deletions(-)
> >
> > diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
> > index c22d8c7a46a1..651c7866debc 100644
> > --- a/fs/fat/fat_write.c
> > +++ b/fs/fat/fat_write.c
> > @@ -450,6 +450,121 @@ set_cluster(fsdata *mydata, __u32 clustnum, __u8 *buffer,
> > return 0;
> > }
> >
> > +static __u8 tmpbuf_cluster[MAX_CLUSTSIZE] __aligned(ARCH_DMA_MINALIGN);
>
> I'm not sure all systems that allow FAT writing will like the additional
> overhead this will incur.
Which part are you seeing as "overhead"?
I know it's ugly but the same technique is also used in fat.c :)
> Have you thrown your patch set into buildman
> to check all boards successfully build?
No, not at all.
Thanks,
-Takahiro Akashi
>
>
> Alex
More information about the U-Boot
mailing list