The problem is : It's still failed after releasing the space on disk.
I make a patch to fix it:
--- ovsdb/log.c+++ ovsdb/log.c@@ -324,5 +324,5 @@
json_string = NULL;
- if (file->write_error) {+ if (file->write_error && (ENOSPC !=
ovsdb_error_errno(file->write_error))) { return
ovsdb_error_clone(file->write_error);
@@ -366,6 +366,7 @@ /* Remove any partially written data, ignoring
errors since there is * nothing further we can do. */
ignore(ftruncate(fileno(file->stream), file->offset));+
ignore(fseeko(file->stream, file->offset, SEEK_SET)); goto error; }
@@ -377,4 +377,9 @@error:+ if (file->write_error) {+
ovsdb_error_destroy(file->write_error);+ file->write_error = NULL;+
}+ file->write_error = ovsdb_error_clone(error); free(json_string);
return error;
--- lib/ovsdb-error.c+++ lib/ovsdb-error.c@@ -73,5 +73,11 @@
return error;}++int ovsdb_error_errno(struct ovsdb_error * error)+{+
return error->errno_;+}+struct ovsdb_error *ovsdb_syntax_error(const struct
json *json, const char *tag, const char *details, ...)
--- lib/ovsdb-error.h+++ lib/ovsdb-error.h@@ -55,3 +55,6 @@#define
OVSDB_WRAP_BUG(MSG, ERROR) \
ovsdb_internal_error(ERROR, __FILE__, __LINE__, "%s", MSG)++int
ovsdb_error_errno(struct ovsdb_error * error);+void ovsdb_error_destroy(struct
ovsdb_error *);
> Date: Mon, 25 Feb 2013 07:38:58 -0800
> From: [email protected]
> To: [email protected]
> CC: [email protected]
> Subject: Re: [ovs-discuss] [question] Write ovs database failed with "no
> space left on device"
>
> On Thu, Feb 21, 2013 at 03:47:43PM +0000, likunyun wrote:
> > There is a problem when I was testing with ovs .
> > Some actions (such as add a port) would be failed when my disk is full,
> > the error is "no space left on device" and write ovs database file failed.
> > Then I delete some files and make sure there is enough space on my
> > disk. But it's also failed with the same error when I do the action (add a
> > port) .
> > It becomes normal until I restart ovsdb-server process.
>
> It's not surprising that an OVSDB operation would fail if the disk is
> full, because as you note the database is maintained on-disk. Given
> that, I don't understand what question you are asking. What do you want
> to know?
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss