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: b...@nicira.com
> To: kunyu...@hotmail.com
> CC: discuss@openvswitch.org
> 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
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to