mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-22 18:24:05 +00:00
ram_fs: unmark modification from nodes that have been synced
Removed the modified mark from handles that have been written to when they are synced, otherwise a notification would be sent again when the handle is closed. Ref #2839
This commit is contained in:
parent
7e126f7fb6
commit
366913c146
@ -53,8 +53,7 @@ namespace File_system {
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called on close of written files, on sync, or on arrival
|
* Called on close of written files
|
||||||
* of a client's CONTENT_CHANGED packet.
|
|
||||||
*/
|
*/
|
||||||
void notify(Version curr_version)
|
void notify(Version curr_version)
|
||||||
{
|
{
|
||||||
@ -66,11 +65,11 @@ namespace File_system {
|
|||||||
if (curr_version.value == _notified_version.value)
|
if (curr_version.value == _notified_version.value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_sink.ready_to_ack())
|
if (_sink.ready_to_ack()) {
|
||||||
_sink.acknowledge_packet(Packet_descriptor(
|
_sink.acknowledge_packet(Packet_descriptor(
|
||||||
_handle, Packet_descriptor::CONTENT_CHANGED));
|
_handle, Packet_descriptor::CONTENT_CHANGED));
|
||||||
|
_notified_version = curr_version;
|
||||||
_notified_version = curr_version;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -73,9 +73,9 @@ class File_system::Open_node : public File_system::Node
|
|||||||
/*
|
/*
|
||||||
* Notify remaining listeners about the changed file
|
* Notify remaining listeners about the changed file
|
||||||
*/
|
*/
|
||||||
if (_was_written)
|
if (_was_written && node.valid()) {
|
||||||
if (node.valid())
|
node->notify_listeners();
|
||||||
node->notify_listeners();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Genode::Weak_ptr<NODE>&node() { return _node; }
|
Genode::Weak_ptr<NODE>&node() { return _node; }
|
||||||
@ -109,7 +109,8 @@ class File_system::Open_node : public File_system::Node
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mark_as_written() { _was_written = true; }
|
void mark_as_written() { _was_written = true; }
|
||||||
|
void unmark_as_written() { _was_written = false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _OPEN_NODE_H_ */
|
#endif /* _OPEN_NODE_H_ */
|
||||||
|
@ -123,6 +123,7 @@ class Ram_fs::Session_component : public File_system::Session_rpc_object
|
|||||||
if (!node.valid())
|
if (!node.valid())
|
||||||
break;
|
break;
|
||||||
node->notify_listeners();
|
node->notify_listeners();
|
||||||
|
open_node.unmark_as_written();
|
||||||
succeeded = true;
|
succeeded = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user