|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V3 2/6] libxl_read_file_contents: fix reading sysfs file
On Sun, Apr 19, 2015 at 11:50:48AM +0800, Chunyan Liu wrote:
> Sysfs file has size=4096 but actual file content is less than that.
> Current libxl_read_file_contents will treat it as error when file size
> and actual file content differs, so reading sysfs file content with
> this function always fails. Fix it so that we can reuse this function
> to get sysfs file content in later pvusb work.
>
I'm not sure if I should classify this as a bug in Linux's sysfs
interface.
In any case, we would still like to detect the error case that file size
is changed under our feet.
I have a dumb idea of having a dedicated function that is used to read
sysfs, but I'm not sure if it is too dumb.
I will wait for Ian and Ian's input on this.
Wei.
> Signed-off-by: Chunyan Liu <cyliu@xxxxxxxx>
> ---
> tools/libxl/libxl_utils.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
> index 9053b27..18ad2b8 100644
> --- a/tools/libxl/libxl_utils.c
> +++ b/tools/libxl/libxl_utils.c
> @@ -363,12 +363,9 @@ int libxl_read_file_contents(libxl_ctx *ctx, const char
> *filename,
> if (!data) goto xe;
>
> rs = fread(data, 1, datalen, f);
> - if (rs != datalen) {
> + if (rs != datalen && !feof(f)) {
> if (ferror(f))
> LOGE(ERROR, "failed to read %s", filename);
> - else if (feof(f))
> - LOG(ERROR, "%s changed size while we were reading it",
> - filename);
> else
> abort();
> goto xe;
> --
> 1.8.5.2
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |