3. 12-May-2015
Gluster Summit, Barcelona
Daemons managed
● Gluster NFS
● Proactive self heal (SHD)
● QuotaD
● Rebalance
● Bricks
● SnapD
● BitD, Tiering (>=3.7)
● And many more to come
4. 12-May-2015
Gluster Summit, Barcelona
Challenges
● Fragmented, scattered & redundant code
● Maintainability becomes a real challenge
● Pain for new developers to identify the pattern
● Copy paste tends to introduce more bugs
5. 12-May-2015
Gluster Summit, Barcelona
Benefits from refactoring
● Code looks more structured
● Follows object styling
● Code reusablity
● No more fragmented code – seggregated into different
management levels
● Easy to understand
● Lesser time to write new daemons
● Ease of mantainance
7. 12-May-2015
Gluster Summit, Barcelona
Service Management
● Service can have its own customized data
● Default glusterd_svc_t structure
● Name of the daemon service
● Connection object
● Process object
● Function pointer of svc_manager, start & stop
● Status of the daemon (online/offline)
● Methods – init (), reconfigure (), svcs_manager (),
svcs_stop (), svcs_reconfigure (),
8. 12-May-2015
Gluster Summit, Barcelona
Connection Management
● Manages the rpc connection
● Default glusterd_conn_t structure
● rpc connection
● socket path
● frame-timeout (default to 600s)
● rpc notify function pointer
● Methods – init (), connect (), disconnect (), term
()
9. 12-May-2015
Gluster Summit, Barcelona
Process Management
● Place holder to keep all the process related
information
● glusterd_proc_t
● process_name
● pidfile
● logdir
● logfile
● volfile, volfileserver, volfileid
● Methods – init (), proc_stop () , is_proc_running
()
10. 12-May-2015
Gluster Summit, Barcelona
How to write a new daemon
● Per node daemon
● Add your service (glusterd_svc_t) in
glusterd_conf_t
● Init your service in glusterd_svc_init_all ()
● Add xxx_svc_manager () in
glusterd_svcs_manager (), same for
reconfigure & stop as well.
● Invoke xxx_svc_manager () wherever
required (eg : volume start/stop)
11. 12-May-2015
Gluster Summit, Barcelona
How to write a new daemon (ii)
● Per volume daemon
● Add your service (glusterd_svc_t) in
glusterd_volinfo_t
● Trigger is on a volume configuration change
– Init your service when the volume is
created
– Need to be careful while restoring &
importing volumes
– Invoke xxx_svc_manager () wherever
required (eg : volume start/stop)